// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This file will be processed by the MIDL tool to
// produce the type library (GaiaCredentialProvider.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";

[
  object,
  uuid(CEC9EF6C-B2E6-4BB6-8F1E-1747BA4F7138),
  pointer_default(unique)
]
interface IGaiaCredentialProvider : IUnknown {
  HRESULT GetUsageScenario([out] DWORD* cpus);
  HRESULT OnUserAuthenticated([in] IUnknown* credential,
                              [in] BSTR username,
                              [in] BSTR password,
                              [in] BSTR sid,
                              [in] BOOL fire_credentials_changed);
};

[
  object,
  uuid(E5BF88DF-9966-465B-B233-C1CAC7510A59),
  pointer_default(unique)
]
interface IGaiaCredential : IUnknown {
  HRESULT Initialize([in] IGaiaCredentialProvider* provider);
  HRESULT Terminate();
  HRESULT OnUserAuthenticated([in] BSTR authentication_info,
                              [out] BSTR* status_text);
  HRESULT ReportError([in] LONG status,
                      [in] LONG substatus,
                      [in] BSTR status_text);
};

[
  object,
  uuid(CC75BCEA-A636-4798-BF8E-0FF64D743451),
  pointer_default(unique)
]
interface IReauthCredential : IUnknown {
  HRESULT SetEmailForReauth([in] BSTR email);
  HRESULT SetOSUserInfo([in] BSTR sid, [in] BSTR domain, [in] BSTR username);
};

[
  uuid(4ADC3A52-8673-4CE3-81F6-833D18BEEBA2),
  version(1.0),
]
library GaiaCredentialProviderLib
{
  importlib("stdole2.tlb");
  [
    uuid(PLACEHOLDER-GUID-89adae71-aee5-4ee2-bffb-e8424e06f519),
  ]
  coclass GaiaCredentialProvider
  {
    [default] interface IGaiaCredentialProvider;
  };
};
